package lkx.demo.test5;

import java.util.Arrays;

/**
 *
 *数组工具类Arrays的使用 (熟悉)
 *
 * 1. Arrays类所在位置: 处在java.util包下
 *
 * 2. 作用：
 *  java.util.Arrays类即为操作数组的工具类，包含了用来操作数组（比如排序和搜索）的各种方法。
 * @author kunxianli
 * @date 2024/02/01 14:36
 **/
public class TestArraysTool {

    public static void main(String[] args) {

        //方法1. boolean equals(int[] a,int[] b)：比较两个数组的元素是否依次相等
        int[] arr1 = new int[]{1,2,3,4,5};
        int[] arr2 = new int[]{1,2,3,4,5};
        System.out.println(Arrays.equals(arr1,arr2));

        // 方法2 String toString(int[] a):输出数组元素信息。也就是将数组转成字符串
        int[] arr3 = new int[]{1,2,3,4,5};
        System.out.println(arr3);// 直接打印只能打印对象首地址的hash信息
        String arrStr = Arrays.toString(arr3);
        System.out.println(arrStr); //[1, 2, 3, 4, 5]

        //方法3.void fill(int[] a,int val):将指定值填充到数组之中。会替换掉原先的元素值
        int[] arr4 = new int[]{1,2,3,4,5};
        System.out.println("原数组："+Arrays.toString(arr4));
        Arrays.fill(arr4,10);
        System.out.println("填充后的数组："+Arrays.toString(arr4));//[10, 10, 10, 10, 10]

        //4.1 void sort(int[] a):使用快速排序算法实现的排序
        int[] arr51 = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        Arrays.sort(arr51);
        System.out.println("排序后的数组："+Arrays.toString(arr51));
//        void sort(int[] a, int fromIndex, int toIndex) 将下标从 fromIndex 到 toIndex 内的元素进行排序
        int[] arr52 = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        Arrays.sort(arr52,1,arr52.length-2);
        System.out.println("排序后的数组："+Arrays.toString(arr52));//[34, 2, 3, 5, 7, 34, 54, 65, 76, 34, 67]

        //5. int binarySearch(int[] a,int key):二分查找
        int[] arr6 = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        int target = 3;
//        先排序
        Arrays.sort(arr6);
        System.out.println("排序后的数组："+Arrays.toString(arr6));
//        再查找
        int index = Arrays.binarySearch(arr6, target);
        System.out.println(index);

//        6. static int[] copyOf(int[] original, int newLength)
        int[] arr7 = new int[]{1,2,3,4,5};
        int[] copyArr = Arrays.copyOf(arr7, 6);
        System.out.println(Arrays.toString(copyArr));
    }

}
